A. Field of the Invention
The invention relates generally to coding, and, more particularly, to a 64b/66b coding scheme that is used to send and receive data and control information over a serial transmission medium.
B. Description of the Related Art
In modern communication systems, unidirectional high-speed serial links using Non Return to Zero (NRZ) signaling are often employed for communication between chips on a board or between boards in a modular system.
Before being transmitted on a high-speed serial link, data needs to be encoded to obtain certain properties required for reliable communication:                A certain bit transition density is required to ensure the receiving clock-data-recovery circuitry is capable of extracting a suitable receive clock from the bit stream.        Since data is presented to the receiver as a continuous stream of bits, some information is needed for the receiver to be able to infer boundaries to differentiate one data word from another in the bit stream.        As most high-speed serial links operate in an AC-coupled manner, i.e., employing a DC-blocking cap in the path between a transmitter and a receiver, the transmitted bit stream needs to be DC-balanced.        
For high-speed serial links using NRZ signaling, the 8b/10b coding scheme has provided a coding scheme that “guarantees” all of these properties. Such an 8b/10b coding scheme is described in the IBM Journal of Research and Development, Vol. 27, No. 5, September 1983, “A DC-Balanced, Partitioned-Block 8B/10B Transmission Code” by Widmer and Franaszek.
The coding overhead of the 8b/10b coding scheme is 25%, i.e., the encoder adds 2 bits of extra information for every 8 user bits. As the bit rate of the high-speed serial links increases, this overhead grows immensely in terms of absolute bandwidth. For example, consider a serial link that is capable of transmitting data at a rate of 10 Gbps (Gigabits per second). If the 8b/10b coding scheme is used, only 8 Gbps would be available for actual user data, with the remaining 2 Gbps needed for the coding overhead.
Recently, a much-lower overhead coding scheme known as ‘IEEE 64b/66b’ has been devised. The IEEE 64b/66b coding scheme is described in various respects in the following references:                IEEE Std 802.3ae 2002, Clause 49, “Physical Coding Sublayer (PCS) for 64B/66B, type 10GBASE-R”.        U.S. Pat. No. 6,650,638, “Decoding Method and Decoder for 64b/66b Coded Packetized Serial”, by Richard Walker et al.        U.S. Pat. No. 6,718,491, “Coding Method and Coder for Coding Packetized Serial Data with Low Overhead”, by Richard Walker et al.        United States Patent Publication No. 2004/0228364 “Coding Method and Coder for Coding Packetized Serial Data with Low Overhead”, by Richard Walker et al.        
The IEEE 64b/66b coding scheme has been developed for transporting a 10 Gbps Ethernet data stream over a single high-speed serial link running 10.3125 Gbps, and thus it has a coding overhead of only 3.125%.
While the IEEE 64b/66b coding scheme satisfies the three desirable properties described earlier, it has certain restrictions on the user data that can be carried. These restrictions may not adversely affect the intended application of carrying a XAUI data stream or a restricted XGMII data stream, as the IEEE 64b/66b coding scheme has been specifically designed with this application in mind. However, for other applications, the restrictions of the IEEE 64b/66b coding scheme can significantly limit its usefulness.
Hence, a new 64b/66b coding scheme is needed that is applicable to many different types of data streams.